package br.com.gerenteweb.testes;

import org.junit.Assert;
import org.junit.Test;

import br.com.gerenteweb.beans.ItensDeProduto;
import br.com.gerenteweb.beans.NotaDeCompra;
import br.com.gerenteweb.beans.Produto;
import br.com.gerenteweb.mynewexceptions.ValorNegativoException;

public class NotaDeCompraTest {

	@Test
	public void deveTestarIncrementarProdutosDaListaDeCompra()
			throws ValorNegativoException {
		Produto produto = new Produto();
		produto.incrementarQuantidade(20);

		NotaDeCompra nfe = new NotaDeCompra();

		ItensDeProduto item = new ItensDeProduto();

		item.setProduto(produto);
		item.setQuantidade(10);

		nfe.adicionarProduto(item);
		nfe.incrementaProdutos();

		Assert.assertEquals(30, produto.getQuantidade(), 0);
	}

	@Test(expected = ValorNegativoException.class)
	public void deveTestarIncrementarProdutosDaListaDeCompraIncorretamente()
			throws ValorNegativoException {
		Produto produto = new Produto();
		produto.incrementarQuantidade(20);

		NotaDeCompra nfe = new NotaDeCompra();

		ItensDeProduto item = new ItensDeProduto();

		item.setProduto(produto);
		item.setQuantidade(-10);

		nfe.adicionarProduto(item);
		nfe.incrementaProdutos();

		Assert.assertEquals(30, produto.getQuantidade(), 0);
	}
	
	@Test
	public void deveTestarCalcularValorTotalDaNota() throws ValorNegativoException{
		Produto produto = new Produto();
		produto.incrementarQuantidade(20);

		NotaDeCompra nfe = new NotaDeCompra();

		ItensDeProduto primItem = new ItensDeProduto();

		primItem.setProduto(produto);
		primItem.setQuantidade(2);
		primItem.setPreco(20);
		
		ItensDeProduto segItem = new ItensDeProduto();
		
		segItem.setProduto(produto);
		segItem.setQuantidade(5);
		segItem.setPreco(50);

		nfe.adicionarProduto(primItem);
		nfe.adicionarProduto(segItem);
		
		nfe.incrementaProdutos();

		Assert.assertEquals(290, nfe.calcularValorTotal(), 0);
	}

}
